x86: teardown_msi_irq is not needed.
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 20 Aug 2009 07:26:51 +0000 (08:26 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 20 Aug 2009 07:26:51 +0000 (08:26 +0100)
teardown_msi_irq logic is covered in destroy_irq,
so remove it to avoid freeing msi resource twice.

Signed-off-by: Xiantao Zhang<xiantao.zhang@intel.com>
xen/arch/x86/irq.c
xen/arch/x86/msi.c

index 36830544694135334faaf2de7414dccae6faae4c..c1105802e3f3d82ebeee2939e144f46237653021 100644 (file)
@@ -1383,9 +1383,6 @@ int unmap_domain_pirq(struct domain *d, int pirq)
 
     BUG_ON(irq != domain_pirq_to_irq(d, pirq));
 
-    if ( msi_desc )
-        teardown_msi_irq(irq);
-
     if ( !forced_unbind )
     {
         d->arch.pirq_irq[pirq] = 0;
index faffa485d100b891a3dfafebde7d5d1ad1313ee8..5125ba1cbe672e1575abe32dd0ed196192e7a67f 100644 (file)
@@ -215,22 +215,6 @@ static int set_irq_msi(struct msi_desc *entry)
     return 0;
 }
 
-static int unset_irq_msi(int irq)
-{
-    ASSERT(spin_is_locked(&irq_desc[irq].lock));
-
-    if ( irq >= nr_irqs )
-    {
-        dprintk(XENLOG_ERR, "Trying to uninstall msi data for irq %d\n",
-                irq);
-        return -EINVAL;
-    }
-
-    irq_desc[irq].msi_desc = NULL;
-
-    return 0;
-}
-
 static void write_msi_msg(struct msi_desc *entry, struct msi_msg *msg)
 {
     if ( iommu_enabled )
@@ -457,11 +441,6 @@ int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int irq)
     return 0;
 }
 
-void teardown_msi_irq(int irq)
-{
-    unset_irq_msi(irq);
-}
-
 int msi_free_irq(struct msi_desc *entry)
 {
     if ( entry->msi_attrib.type == PCI_CAP_ID_MSIX )
@@ -780,27 +759,10 @@ void pci_disable_msi(struct msi_desc *msi_desc)
 static void msi_free_irqs(struct pci_dev* dev)
 {
     struct msi_desc *entry, *tmp;
-    struct irq_desc *desc;
-    unsigned long flags, irq;
 
     list_for_each_entry_safe( entry, tmp, &dev->msi_list, list )
     {
-        irq = entry->irq;
-        desc = &irq_desc[irq];
         pci_disable_msi(entry);
-
-        spin_lock_irqsave(&desc->lock, flags);
-
-        teardown_msi_irq(irq);
-
-        if ( desc->handler == &pci_msi_type )
-        {
-            /* MSI is not shared, so should be released already */
-            BUG_ON(desc->status & IRQ_GUEST);
-            desc->handler = &no_irq_type;
-        }
-
-        spin_unlock_irqrestore(&desc->lock, flags);
         msi_free_irq(entry);
     }
 }